Fonksiyon Gaspı (Function Overriding)
Fonksiyon gaspı, nesne yönelimli programlamada (OOP) bir alt sınıfın (child class/subclass) üst sınıfından (parent class/superclass) miras aldığı bir fonksiyonu, kendi ihtiyaçlarına göre yeniden tanımlaması işlemidir. Bu sayede, alt sınıf, üst sınıfın genel davranışını korurken, belirli durumlarda farklı bir davranış sergileyebilir.
Temel Kavramlar:
- Miras (Inheritance): Alt sınıf, üst sınıfın özelliklerini ve davranışlarını otomatik olarak devralır. (Miras)
- Polimorfizm (Polymorphism): Aynı isimli fonksiyonların farklı sınıflarda farklı davranışlar sergileyebilmesidir. Fonksiyon gaspı, polimorfizmin önemli bir örneğidir. (Polimorfizm)
- Üst Sınıf (Superclass/Parent Class): Miras veren sınıf.
- Alt Sınıf (Subclass/Child Class): Miras alan sınıf.
Fonksiyon Gaspının İşleyişi:
- Alt sınıf, üst sınıfta tanımlı olan bir fonksiyonun aynısını (isim, parametreler) kendi içinde tanımlar.
- Alt sınıfın nesnesi üzerinden bu fonksiyon çağrıldığında, üst sınıfın fonksiyonu yerine alt sınıfta tanımlanan fonksiyon çalışır.
- Alt sınıfın fonksiyonu içinde, üst sınıfın fonksiyonuna erişmek gerekirse, genellikle
super()
anahtar kelimesi kullanılır. Bu, üst sınıfın fonksiyonunun doğrudan çağrılmasını sağlar. (Super())
Fonksiyon Gaspının Faydaları:
- Esneklik: Alt sınıfların, üst sınıfların davranışlarını özelleştirmesine olanak tanır.
- Kodun Yeniden Kullanımı: Üst sınıftaki genel mantık korunurken, yalnızca belirli kısımlar değiştirilebilir.
- Bakım Kolaylığı: Değişiklikler, yalnızca ilgili alt sınıfta yapılır, üst sınıftaki kod etkilenmez.
Örnek (Python):
class Hayvan:
def ses_çıkar(self):
print("Genel hayvan sesi")
class Kedi(Hayvan):
def ses_çıkar(self):
print("Miyav!")
hayvan = Hayvan()
kedi = Kedi()
hayvan.ses_çıkar() # Output: Genel hayvan sesi
kedi.ses_çıkar() # Output: Miyav!
Bu örnekte, Kedi
sınıfı, Hayvan
sınıfının ses_çıkar
fonksiyonunu gasp etmiştir. Kedi
nesnesi üzerinden ses_çıkar
fonksiyonu çağrıldığında, "Miyav!" çıktısı alınır.